/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package HandlingInput;
import java.io.IOException;
import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.CharacterData;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

/**
 *
 * @author NGUYEN VAN TAM
 */
public class XMLHandling {
    
    // chuyễn một string thành một xmldocument 
    public static Document ConvertStringToXMLDocument(String xmlString)
    {
        try
        {
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();
            InputSource is = new InputSource();
            is.setCharacterStream(new StringReader(xmlString));

            Document doc = db.parse(is);
            return doc;
        }
        catch(SAXException ex)
        {
            return null;
        }
        catch(ParserConfigurationException ex)
        {
            return null;
        }
        catch(IOException ex)
        {
            return null;
        }
    }

    // nhận inner text của element có tagname và vị trí index trong document đọc từ trên xuống
    public static String GetValue(Document doc, String tagname, int index)
    {
        try {
            NodeList nodes = doc.getElementsByTagName(tagname);
            Element element = (Element) nodes.item(index);
            return getCharacterDataFromElement(element);
        }
        catch (Exception e) {
            return null;
        }
    }
    // nhận inner text của element
    public static String getCharacterDataFromElement(Element e) {
        Node child = e.getFirstChild();
        if (child instanceof CharacterData)
        {
            CharacterData cd = (CharacterData) child;
            return cd.getData();
        }
        return null;
    }
}
